Project Mushroom

You are a dark forest spirit named Capra who collects mushrooms for your own magical needs. As you enter your mushroom forest to start gathering, you start to realize there's something wrong in your forest. Mushrooms are attacking back and their spores are turning the world around into something bad. You must traverse the forest and fight through enemies and solve puzzles to figure out what has made mushrooms your enemy.

> Game Design Document

Genre: Platformer
Role: Lead/Solo Developer
Platform: PC
Engine: Unity
Time: Ongoing

Reflections on Development


I was the lead and solo developer for this project. I wanted to create something to help explore my weaknesses and strengths. With this project it gives me a chance to explore more animation coding and artificial intelligence coding. From previous projects I saw the simplicity in my code and wanted to try something a little more challenging. The main focus was to make something not only fun but unique and I sought to do that by making a game where the player can make platforms on a whim while traversing a world and also battle varying enemies.

I started by crafting a very rough prototype in which the player can shoot a projectile that stays in world space and can be interacted with as a platform. I really like how it felt to play so after building the projectile prototype I moved to a more fluid character controller. Standard two dimensional movement for a platform and allowing for attacks with a whip that when thrown will turn into a platform upon colliding with an object. Next Is moving into artificial intelligence for enemy behavior to add some challenge to the player and life into the game.

So far, as this project is still ongoing, I've learned so many new skills already and am happy with what I have so far. I built a stronger confidence in my coding and became faster and more comfortable with new techniques like using ENUMS for creating enemy finite state machines. There are many aspects of the game that must be worked on before its playable but as a project to work on from time to time and continuously return to, I really enjoy what i've learned from it.

Notable Code Block:


This Block of code is a switch statement I used for changing the animation and hit box of the player when the input is pressed within a specific time frame. Giving a more fluent style of combat when attacking.

Each case is linked to a variable called attackcounter. For every time the player uses the attack input, the counter increments. Each increment changes the hit box that is instantiated and the animation that is played during. If the attack input is not pressed in time to reach the next case, it is reset back to case zero.

switch (attackcountcounter)
{
    case 0:
        locked = true;
        attackcountcounter++;
        Instantiate(Attack1, spawn.transform.position, spawn.transform.rotation);
        break;
        
    case 1:
        Destroy(GameObject.FindGameObjectWithTag("Attack1"));
        locked = true;
        attackcountcounter++;
        Instantiate(Attack2, spawn.transform.position, spawn.transform.rotation);
        break;
        
    case 2:
        locked = true;
        Destroy(GameObject.FindGameObjectWithTag("Attack2"));
        attackcountcounter++;
        Instantiate(Attack3, spawn.transform.position, spawn.transform.rotation);
        break;
        
    case 3:
        locked = true;
        Destroy(GameObject.FindGameObjectWithTag("Attack3"));
        attackcountcounter = 0;
        break;
}

locked = false;